/*
 * Это класс предок для панели управления виджетами. Его обычно хватает.
 * Следует его расширять, если вам нужно что-то еще.
 * Причем это делать в кастомных js файлах которые подгружаются при настройке виджета.
 *
 * @author Alexander Sibiryakov
 */
function SettingsPanel(dom_elt, cfg) {
	// вообще программирование такая странная вещь. вот чем больше напишешь, тем меньше хочется сказать. Почему так?
	// а нутром чуешь, что поговорить то хочется и тебе и твоим близким.

	// ну ладно че это я!
	this._view = new SettingsPanelView(dom_elt);

	// lucky: иногда бывает так: посмотришь на бескрайнее Небо и скажешь
	// что-то очень-очень важное.  а когда рассказ окончен, вдруг понимашь,
	// что некоторые вещи зависят от времени суток. ведь утром Оно уже не
	// такое, каким было ночью.  но повторять рассказ о бескрайнем Небе,
	// можно лишь в том случае, когда у тебя достаточно времени. когда
	// спешишь, расскажи лишь о том, что видел сегодня утром. ведь в
	// своей безграничности Оно по-прежнему остается Небом...
	if (typeof cfg == 'object') for (var i in cfg) this[i] = cfg[i];
}

SettingsPanel.prototype.bind = function() {
		jQuery(this._view.getSubmitButton()).bind("click", this, this.onSubmit);
		jQuery(this._view.getCloseButton()).bind("click", this, this.onClose);
}

SettingsPanel.prototype.onSubmit = function(event) {
		event.preventDefault();
		var _this = event.data;
		_this.beforeSubmit(event);
		cp.set_env_object(_this);

		cp.call(get__Url('/ajax'), 'ajax_updateSettings', function(result) {

			var widget_id = result.ajaxResponse[0].data;
			dctrl.upWidget(widget_id);

			// закрыть
			dctrl.backgroundOff();
			this._view.rmPanel();

		}, jQuery(_this._view.getSettingsForm()).serialize() );
}

SettingsPanel.prototype.onClose = function(event) {
		event.preventDefault();
		var _this = event.data;
		_this.beforeClose(event);
		dctrl.backgroundOff();
		event.data._view.rmPanel();
}

SettingsPanel.prototype.beforeSubmit = function(event) {}
SettingsPanel.prototype.beforeClose = function(event) {}
